package com.zhao.fishingguideserver.dto;

import com.zhao.fishingguideserver.POJO.Product;
import lombok.Data;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 商品数据传输对象 - 用于返回给前端
 * 将coverList字符串转换为数组格式
 */
@Data
public class ProductDTO {
    private Long productId;
    private String productName;
    private String productDetail;
    private List<String> coverList;  // 前端期望的数组格式
    private Integer oldLevel;
    private Integer userId;
    private BigDecimal price;
    private String status; // 商品状态：available-在售，sold-已售出，reserved-已预定，removed-已下架
    private Date creatTime;

    /**
     * 从Product实体转换为ProductDTO
     */
    public static ProductDTO fromProduct(Product product) {
        if (product == null) {
            return null;
        }

        ProductDTO dto = new ProductDTO();
        dto.setProductId(product.getProductId());
        dto.setProductName(product.getProductName());
        dto.setProductDetail(product.getProductDetail());
        dto.setOldLevel(product.getOldLevel());
        dto.setUserId(product.getUserId());
        dto.setPrice(product.getPrice());
        dto.setStatus(product.getStatus());
        dto.setCreatTime(product.getCreatTime());

        // 转换coverList：字符串 → 数组
        dto.setCoverList(convertCoverListToArray(product.getCoverList()));

        return dto;
    }

    /**
     * 批量转换
     */
    public static List<ProductDTO> fromProductList(List<Product> products) {
        if (products == null) {
            return new ArrayList<>();
        }
        return products.stream()
                .map(ProductDTO::fromProduct)
                .collect(Collectors.toList());
    }

    /**
     * 将coverList字符串转换为数组
     * 支持：单个URL、逗号分隔、JSON数组格式
     */
    private static List<String> convertCoverListToArray(String coverListStr) {
        if (coverListStr == null || coverListStr.trim().isEmpty()) {
            return new ArrayList<>();
        }

        coverListStr = coverListStr.trim();

        // 如果已经是JSON数组格式: ["url1", "url2"]
        if (coverListStr.startsWith("[") && coverListStr.endsWith("]")) {
            String content = coverListStr.substring(1, coverListStr.length() - 1);
            content = content.replaceAll("\"", "").trim();
            if (content.isEmpty()) {
                return new ArrayList<>();
            }
            return Arrays.asList(content.split("\\s*,\\s*"));
        }

        // 如果是逗号分隔: url1,url2
        if (coverListStr.contains(",")) {
            return Arrays.asList(coverListStr.split("\\s*,\\s*"));
        }

        // 单个URL
        List<String> list = new ArrayList<>();
        list.add(coverListStr);
        return list;
    }
}

